▋前言
延續昨日的分析,今天我們實際嘗試修正雙人獨立錄音的處理方式,讓系統能正確識別「誰在說話、何時說話、以及雙方的情緒互動」,這是語音 AI 應用落地的重要一環。
▋內容
Step 1:音訊合併
使用 pydub 將 sw02001A.wav(講者 A)與 sw02001B.wav(講者 B)合併成雙聲道音檔:
from pydub import AudioSegment
a = AudioSegment.from_wav("sw02001A.wav")
b = AudioSegment.from_wav("sw02001B.wav")
merged = AudioSegment.from_mono_audiosegments(a, b)
merged.export("sw02001_merged.wav", format="wav")
合併後,左聲道為 A、右聲道為 B,模型在處理時能同時接收兩個聲音來源。
Step 2:重新分析結果
重新跑完整流程後:
Diarization:成功分出 Speaker 0 與 Speaker 1。
STT (Whisper):逐字稿依時間正確排列。
SER (SpeechBrain):可觀察對話的情緒曲線。
雖然把已經分離的音軌合併感覺有點多此一舉,但依照目前系統的分析方式,結果可能會得到改善,例如:
Speaker 0: "I think the weather’s been crazy lately."
Emotion: Neutral → Happy
Speaker 1: "Yeah, it’s been so unpredictable!"
Emotion: Neutral → Excited
這樣的輸出不僅標註了講話者,也呈現了雙方的情緒變化,讓整體互動更具可讀性。
Step 3:前後差異對照
項目 | 修正前 | 修正後 |
---|---|---|
語者數 | 1 人 × 2 檔 | 2 人 × 1 檔 |
對話結構 | 無法對齊 | 時間同步可讀 |
情緒分析 | 各自分散 | 雙向交互 |
分析價值 | 單向片段 | 完整互動 |
Step 4:經驗與反思
這次實驗再次證明: 資料的結構化與同步性,是 AI 成功分析的基礎。
模型的準確率固然重要,但若輸入資料在格式與時間軸上不一致,結果再好也難以反映真實互動。
因此,在設計語音分析系統時,資料前處理(Data Preprocessing)與對齊(Alignment) 是不可忽略的步驟。
▋下回預告
下一篇我們將迎來系列的最後一個資料集 —— IEMOCAP。
這是一個專門為情緒辨識設計的對話語音資料集,我們將用它來驗證整個系統在情緒分析模組上的穩健度與可擴充性。
▋參考資料
Switchboard
huggingface hhoangphuoc/switchboard